﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.GroupBranchCurrencyManagement
{
    public interface IGroupBranchCurrencyManagementService
    {
        /// <summary>
        /// Add new groupBranch.
        /// </summary>
        /// <param name="groupBranch">GroupBranch to be added</param>
        void AddGroupBranchCurrency(GroupBranchCurrency groupBranchCurrency);

        /// <summary>
        /// Change existing groupBranch.
        /// </summary>
        /// <param name="groupBranch">Existing groupBranch to modify.</param>
        void ChangeGroupBranchCurrency(GroupBranchCurrency groupBranchCurrency);

        /// <summary>
        /// Find an groupBranch by its Id.
        /// </summary>
        /// <param name="groupBranchId">GroupBranchId</param>
        /// <returns>An groupBranch</returns>
        GroupBranchCurrency FindGroupBranchCurrencyById(Guid groupBranchCurrencyId);

        /// <summary>
        /// Find an groupBranch by currency Id.
        /// </summary>
        /// <param name="currencyId">Membership CurrencyId</param>
        /// <returns>A groupBranch</returns>
        List<GroupBranchCurrency> FindGroupBranchCurrencyByCurrencyId(Guid currencyId);

        /// <summary>
        /// Remove an existing groupBranch.
        /// </summary>
        /// <param name="groupBranch">The adress to be removed.</param>
        void RemoveGroupBranchCurrency(GroupBranchCurrency groupBranch);
    }
}
